Custom Controller (k8s)
#wip
https://zoetrope.github.io/kubebuilder-training/introduction/basics.html
/mrsekut-book-4295012750/027
Custom Resource (k8s)を管理する専用のcontroller
GPT-4.icon
Custom Controllerとは、ユーザーが定義したCustom Resource (k8s)のライフサイクルを管理するためのプログラムです。
具体的には、CRの追加や更新・削除などのイベントを監視し、それに応じて特定の処理を実行します。
役割と仕組み
CRを監視し、リソースの状態変化(desired stateとactual stateの差分)を検出。
差分に基づいて必要なアクションを実施し、状態を収束させる(reconcile処理)。
Custom Controllerの動作例
Custom Resource「Database」が作成されたら、データベースPodを作成する。
「Database」が削除されたら、関連するPodやPVを削除する。
開発方法
通常はGo言語を使い、controller-runtimeやclient-goなどの公式ライブラリを利用します。
code:go
func (r *DatabaseReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
var db examplev1alpha1.Database
if err := r.Get(ctx, req.NamespacedName, &db); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
// ここで状態をチェックし、desired stateに合わせた処理を実行する
}